﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Cotizav.CONEXION;
using Cotizav.CONEXION.DataSet;
using Microsoft.Reporting.WinForms;
using Cotizav.PRESENTACION.Reporte.Parametros.Cliente;
using Cotizav.PRESENTACION.Reporte.Parametros.Equipos;
using Cotizav.PRESENTACION.Reporte.Parametros.Cotizacion;

namespace Cotizav.PRESENTACION.Reporte
{
    public partial class IUReporte : Form
    {
        public IUReporte()
        {
            InitializeComponent();
        }

        private void IUReporte_Load(object sender, EventArgs e)
        {
            //this.LoadTreeReportes();
            //this.repGeneral.RefreshReport();
            this.repGeneral.Clear();
            treeReportes.ExpandAll();
        }

        private void LoadTreeReportes()
        {
            TreeNode parent = new TreeNode("Cotizav");

            TreeNode sub_Clientes = new TreeNode("Clientes");
            TreeNode sub_Equipos = new TreeNode("Equipos");
            TreeNode sub_Cotizacion = new TreeNode("Cotizaciones");
            TreeNode sub_Visitas = new TreeNode("Visitas");


            parent.Nodes.Add(sub_Clientes);
            parent.Nodes.Add(sub_Equipos);
            parent.Nodes.Add(sub_Cotizacion);

            treeReportes.Nodes.Add(parent);
            treeReportes.ExpandAll();
        }

        private void treeReportes_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (treeReportes.SelectedNode != null)
            {
                repGeneral.Clear();

                switch (treeReportes.SelectedNode.Name)
                {
                    case "node_Clientes_1":  //Reporte General
                        Rep_ClienteGeneral repCli = new Rep_ClienteGeneral();
                        //repCli.Anchor = (AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom | AnchorStyles.Left);
                        if (!tableReportes.Controls.ContainsKey("Rep_ClienteGeneral"))
                        {
                            Panel panelContent = tableReportes.Controls["panelContainer"] as Panel;
                            
                            panelContent.Controls.Clear();
                            panelContent.Controls.Add(repCli);                            
                        }
                        break;
                    case "node_Clientes_2": //clientes x Vendedor
                        Rep_ClienteVendedor CliVend = new Rep_ClienteVendedor();
                        //CliVend.Anchor = (AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom | AnchorStyles.Left);
                        if (!tableReportes.Controls.ContainsKey("Rep_ClienteVendedor"))
                        {
                            Panel panelContent = tableReportes.Controls["panelContainer"] as Panel;

                            panelContent.Controls.Clear();
                            panelContent.Controls.Add(CliVend);  
                        }
                        break;
                    case "node_Equipos_1":
                        Rep_EquiposGeneral RepEquipos = new Rep_EquiposGeneral();
                        if (!tableReportes.Controls.ContainsKey("Rep_EquiposGeneral"))
                        {
                            Panel panelContent = tableReportes.Controls["panelContainer"] as Panel;
                            
                            panelContent.Controls.Clear();
                            panelContent.Controls.Add(RepEquipos);
                        }
                        break;
                    case "node_Cotizacion_1":
                        Rep_CotizacionxCliente RepCotizacion = new Rep_CotizacionxCliente();
                        if (!tableReportes.Controls.ContainsKey("Rep_CotizacionxCliente"))
                        {
                            Panel panelContent = tableReportes.Controls["panelContainer"] as Panel;

                            panelContent.Controls.Clear();
                            panelContent.Controls.Add(RepCotizacion);
                        }
                        break;

                    case "node_Cotizacion_3_1":
                        Rep_CotizacionxEquipo RepCotizxEquipo = new Rep_CotizacionxEquipo();
                        if (!tableReportes.Controls.ContainsKey("Rep_CotizacionxEquipo"))
                        {
                            Panel panelContent = tableReportes.Controls["panelContainer"] as Panel;

                            panelContent.Controls.Clear();
                            panelContent.Controls.Add(RepCotizxEquipo);
                        }
                        break;
                }
            }
        }

        internal void showClientexVendedor(string tipo, DataTable resultado)
        {
            DataSetCotizav.usp_listarClientexVendedorDataTable dt = new DataSetCotizav.usp_listarClientexVendedorDataTable();

            if (resultado != null)
            {
                foreach (DataRow dr in resultado.Rows)
                {
                    dt.Rows.Add
                    (
                        dr[0].ToString(),
                        dr[1].ToString(),
                        dr[2].ToString(),
                        dr[3].ToString(),
                        dr[4].ToString(),
                        dr[5].ToString(),
                        dr[6].ToString(),
                        dr[7].ToString(),
                        dr[8].ToString(),
                        dr[9].ToString()
                    );
                }
            }

            this.repGeneral.Reset();        
            this.repGeneral.LocalReport.ReportEmbeddedResource = "Cotizav.REPORTES.RepClientexVendedor.rdlc"; 
            this.repGeneral.LocalReport.DataSources.Clear();
            this.repGeneral.LocalReport.DataSources.Add(new ReportDataSource("ds_listarClienteVendedor", dt.ToList()));            
            this.repGeneral.RefreshReport();
        }

        internal void showClienteRepGeneral(string tipo, DataTable result)
        {
            DataSetCotizav.usp_listarClientesDataTable dt = new DataSetCotizav.usp_listarClientesDataTable();

            if (result != null)
            {
                foreach (DataRow dr in result.Rows)
                {
                    dt.Rows.Add
                    (
                        dr[0].ToString(),
                        dr[1].ToString(),
                        dr[2].ToString(),
                        dr[3].ToString(),
                        dr[4].ToString(),
                        dr[5].ToString(),
                        dr[6].ToString(),
                        dr[7].ToString(),
                        dr[8].ToString()
                    );
                }
            }

            this.repGeneral.Reset();
            this.repGeneral.LocalReport.ReportEmbeddedResource = "Cotizav.REPORTES.RepClienteReporteGeneral.rdlc"; 
            this.repGeneral.LocalReport.DataSources.Clear();
            this.repGeneral.LocalReport.DataSources.Add(new ReportDataSource("ds_listarClientesReporteGeneral", dt.ToList()));
            this.repGeneral.RefreshReport();
        }

        internal void showEquiposRepGeneral(string tipo, DataTable result, bool mostrarCaracteristicas)
        {
            DataSetCotizav.usp_listarEquiposDataTable dt = new DataSetCotizav.usp_listarEquiposDataTable();

            if (result != null)
            {
                foreach (DataRow dr in result.Rows)
                {
                    dt.Rows.Add
                    (
                        dr[0].ToString(),
                        dr[1].ToString(),
                        dr[2].ToString(),
                        dr[3].ToString(),
                        dr[4].ToString(),
                        dr[5].ToString(),
                        dr[6].ToString(),
                        dr[7].ToString()
                    );
                }
            }

            ReportParameter repParamCaracteristicas = new ReportParameter("visibleCaracteristica", mostrarCaracteristicas.ToString());

            this.repGeneral.Reset();
            this.repGeneral.LocalReport.ReportEmbeddedResource = "Cotizav.REPORTES.RepEquiposReporteGeneral.rdlc"; 
            this.repGeneral.LocalReport.DataSources.Clear();
            this.repGeneral.LocalReport.DataSources.Add(new ReportDataSource("ds_ListarEquipos", dt.ToList()));
            this.repGeneral.LocalReport.SetParameters(repParamCaracteristicas);
            this.repGeneral.RefreshReport();
        }

        internal void showCotizacionxCliente(string tipo, DataTable result, bool mostrarDetalle)
        {
            DataSetCotizav.usp_listarCotizacionxClienteDataTable dt = new DataSetCotizav.usp_listarCotizacionxClienteDataTable();

            if (result != null)
            {
                foreach (DataRow dr in result.Rows)
                {
                    dt.Rows.Add
                    (
                        dr[0].ToString(),
                        dr[1].ToString(),
                        dr[2].ToString(),
                        dr[3].ToString(),
                        dr[4].ToString(),
                        dr[5].ToString(),
                        dr[6].ToString(),
                        dr[7].ToString(),
                        dr[8].ToString(),
                        dr[9].ToString(),
                        dr[10].ToString(),
                        dr[11].ToString(),
                        dr[12].ToString(),
                        dr[13].ToString(),
                        dr[14].ToString(),
                        dr[15].ToString(),
                        dr[16].ToString(),
                        dr[17].ToString(),
                        dr[18].ToString(),
                        dr[19].ToString()
                     );
                }
            }

            ReportParameter repParamDetalle = new ReportParameter("visibleDetalle", mostrarDetalle.ToString());

            this.repGeneral.Reset();
            this.repGeneral.LocalReport.ReportEmbeddedResource = "Cotizav.REPORTES.RepCotizacionxCliente.rdlc";
            this.repGeneral.LocalReport.DataSources.Clear();
            this.repGeneral.LocalReport.DataSources.Add(new ReportDataSource("ds_CotizacionxCliente", dt.ToList()));
            this.repGeneral.LocalReport.SetParameters(repParamDetalle);
            this.repGeneral.RefreshReport();
        }
    }
}
